﻿var openWindow = true;

// Positionne le focus sur le champ s�lectionn�.
function makeFocusOnField(fieldName) {

	var field = document.getElementById(fieldName);
	if (field && field.focus()) {
		field.focus();
	}
}

// Ouverture d'une nouvelle fen�tre. Cette m�thode utilise une variable gobale
// pour savoir si une fen�tre � d�j� �t� ouverte. Ce syst�me n'est pas
// infaillible car il est impossible de contr�ler la fermeture d'une fen�tre
// (Alt F4 ou plus simplement la croix de fermeture).
function openOneWindow(url, winName, width, height, options) {
	leftVal = (screen.width - width) / 2;
	topVal = (screen.height - height) / 2;

	if (openWindow) {
		window.open(url, winName, 'width=' + width + ',height=' + height
				+ ',left=' + leftVal + ',top=' + topVal + "'" + options + "'");
		openWindow = false;
	}
}

// R�initialisation de la variable pour
// permettre l'ouverture d'une fen�tre.
function releaseOneWindow() {
	openWindow = true;
}

// Positionne une fen�tre (div) au centre de l'�cran.
function centerPopup(Xwidth, Yheight, divId) {

	var scrolledX, scrolledY;
	if (self.pageYoffset) {
		scrolledX = self.pageXoffset;
		scrolledY = self.pageYoffset;
	} else if (document.documentElement && document.documentElement.scrollTop) {
		scrolledX = document.documentElement.scrollLeft;
		scrolledY = document.documentElement.scrollTop;
	} else if (document.body) {
		scrolledX = document.body.scrollLeft;
		scrolledY = document.body.scrollTop;
	}

	var centerX, centerY;
	if (self.innerHeight) {
		centerX = self.innerWidth;
		centerY = self.innerHeight;
	} else if (document.documentElement
			&& document.documentElement.clientHeight) {
		centerX = document.documentElement.clientWidth;
		centerY = document.documentElement.clientHeight;
	} else if (document.body) {
		centerX = document.body.clientWidth;
		centerY = document.body.clientHeight;
	}

	var leftoffset = scrolledX + (centerX - Xwidth) / 2;
	var topoffset = scrolledY + (centerY - Yheight) / 2;
	var o = document.getElementById(divId);
	var r = o.style;
	r.position = 'absolute';
	r.top = topoffset + 'px';
	r.left = leftoffset + 'px';
	r.display = "block";
}

// Affiche les infos essentielles d'un wagon. (dw = display wagon)
// Entorse : les libell�s ne sont pas dans le .properties
// Comme il ne s'agit pas d'une fonction g�n�rique, le nom du
// div est en dur dans la fonction.
function dw(id, status, from, train_id, sillonId, riv, trailer, fuel, ate) {

	if (from == 0) {
		from = "NC";
	}

	if (train_id.length == 0) {
		train_id = "NC";
	}

	if (id.length == 12) {
		var wagonId = id.substring(0, 2);
		wagonId += " " + id.substring(2, 4);
		wagonId += " " + id.substring(4, 7);
		wagonId += " " + id.substring(7, 11);
		wagonId += " " + id.substring(11, 12);
		id = wagonId;
	}

	if (fuel.length == 0) {
		fuel = "NC";
	}

	if (ate.length == 0) {
		ate = "NC";
	}
        if (sillonId.length == 0) {
		sillonId = "NC";
	}

	var str = "Identifiant : " + id + "<br/>";
	str += "Statut : " + status + "<br/>";

	if (trailer) {
		str += "En provenance de la voie : " + from + "<br/>";
		str += "Train Id : " + train_id + "<br/>";
		str += "Sillon : " + sillonId + "<br/>";
		str += "Riv : " + riv + "<br/>";
		str += "Ate : " + ate;
	} else {
		str += "Niveau de fioul : " + fuel;
	}

	var divId = "display_info_wagon";
	var div = document.getElementById(divId);
	if (div) {
		div.innerHTML = str;
		display_div_xy(true, divId, 100, -20);
	}
}

// Cache le div d'affichage des infos wagon (dw_c = display wagon close).
// Comme il ne s'agit pas d'une fonction g�n�rique, le nom du
// div est en dur dans la fonction.
function dw_c() {

	var divId = "display_info_wagon";
	var div = document.getElementById(divId);
	if (div) {
		display_div_xy(false, divId, 0, 0);
	}
}

// Prend l'ensemble des wagons et les place dans un lot.
// (pw_l = put wagons lot)
function pw_l(nbWagons, textBoxId) {

	var objText = document.getElementById(textBoxId);
	if (objText != null && nbWagons > 0) {
		objText.value = nbWagons;
	}
}

// Demande l'activation d'une fonction dans une page xhtml
// au chargement de la page (onload). La fonction doit obligatoirement
// s'appeler javascriptOnLoad. Si elle est trouv�e, elle est alors execut�e.
function doJavascriptOnload() {
	if ('function' == typeof (javascriptOnLoad)) {
		javascriptOnLoad();
	}
}

// Contr�le d'une heure valide en temps r�el.
function checkTime(o) {

	var evtobj = window.event;
	var unicode = evtobj.charCode ? evtobj.charCode : evtobj.keyCode;
	var actualkey = String.fromCharCode(unicode);
	var lstValidChar = "0123456789";

	if (lstValidChar.indexOf(actualkey, 0) == -1)
		return false;

	if (o.value.length == 0 && actualkey > 2)
		return false;

	if (o.value.length == 1 && o.value > 1 && actualkey > 3)
		return false;

	if (o.value.length == 2)
		o.value += ":";

	if (o.value.length == 3 && actualkey > 5)
		return false;

	return true;
}

// Contr�le d'un champ num�rique en temps r�el.
function checkNumber(o) {
	var evtobj = window.event;
	var unicode = evtobj.charCode ? evtobj.charCode : evtobj.keyCode;
	var actualkey = String.fromCharCode(unicode);
	var lstValidChar = "0123456789.";

	if (lstValidChar.indexOf(actualkey, 0) == -1)
		return false;

	if (actualkey == "." && o.value.indexOf(actualkey, 0) != -1)
		return false;

	var idx = o.value.indexOf(".", 0);
	if (idx > 0 && (o.value.length - idx) > 2)
		return false;
}

// Contr�le d'un entier en temps r�el.
function checkInteger(o) {
	var evtobj = window.event;
	var unicode = evtobj.charCode ? evtobj.charCode : evtobj.keyCode;
	var actualkey = String.fromCharCode(unicode);
	var lstValidChar = "0123456789";

	if (lstValidChar.indexOf(actualkey, 0) == -1)
		return false;
}

// Contr�le de la saisie d'un id wagon en temps r�el.
function checkWagonExtId(o) {
	var check = checkInteger(o);

	if (o.value.length == 2 || o.value.length == 5 || o.value.length == 9
			|| o.value.length == 14)
		o.value += " ";

	return check;
}

// V�rifie qu'il y a au moins z�ro dans le champ pour
// �viter les plantages avec jsf et les champs de type int.
function checkIntegerNotNull(o) {
	if (o.value.length == 0) {
		o.value = 0;
	}
}

// V�rifie qu'il y a au moins z�ro dans le champ pour
// �viter les plantages avec jsf et les champs de type float.
function checkFloatNotNull(o) {
	if (o.value.length == 0) {
		o.value = '0.0';
	}
}



//position du lot dans le train
function listNumLots(){
	
	var liste =new Array();
	var j = 0;
	var table = document.getElementById("formation_1_plan_form:formation_plan_table:tbn").rows;
	for(var i=0; i<table.length; i++){
		var input = document.getElementById("formation_1_plan_form:formation_plan_table:"+i+":nbWagonsStack");
		if (input.getAttribute("value") > 0 ){
			j++;
			liste[j-1] = j;
		}
		
	}
	return liste;
}

